// m
// 给定一个非负整数数组nums，将数组中的数字拼起来排成一个数，打印能拼接出的所有数字中的最大的一个

// 思路：本质上是给数组进行排序，假设x和y是nums的两个元素，如果拼接字符串x+y < y+x,则y应该排在x前面

// 时间复杂度：O(nlogn)，也就是排序算法的时间复杂度
// 空间复杂度：O(1)

function largestNumber(nums) {
    function cmp(a, b) {
        let str1 = Number(String(a) + String(b))
        let str2 = Number(String(b) + String(a))
        return str2 - str1
        
    }
    nums.sort(cmp)
    // 其实如果首位是0，说明整个最大数就是0了
    if (nums[0] === 0) {
        return '0';
    }
    return nums.join('')
}

let nums = [3, 30, 34, 5, 9]
console.log(largestNumber(nums));